import * as API from "@/api";
import { setToken, getToken } from "@/libs/util";

export default {
  state: {
    userName: "",
    userId: "",
    avatorImgPath: "",
    token: getToken(),
    access: "",
    messageCount: 3
  },
  mutations: {
    setAvator(state, avatorPath) {
      state.avatorImgPath = avatorPath;
    },
    setUserId(state, id) {
      state.userId = id;
    },
    setUserName(state, name) {
      state.userName = name;
    },
    setAccess(state, access) {
      state.access = access;
    },
    setToken(state, token) {
      state.token = token;
      setToken(token);
    }
  },
  actions: {
    // 登录
    handleLogin({ commit }, obj) {
      return new Promise((resolve, reject) => {
        API.login(obj)
          .then(res => {
            const data = res.data;
            commit("setToken", data.token);
            resolve(data);
          })
          .catch(err => {
            reject(err);
          });
      });
    },
    // 退出登录
    handleLogOut({ state, commit }) {
      return new Promise((resolve, reject) => {
        API.logout(state.token)
          .then(() => {
            commit("setToken", "");
            commit("setAccess", []);
            resolve();
          })
          .catch(err => {
            reject(err);
          });
        // 如果你的退出登录无需请求接口，则可以直接使用下面三行代码而无需使用logout调用接口
        // commit('setToken', '')
        // commit('setAccess', [])
        // resolve()
      });
    },
    // 获取用户相关信息
    getUserInfo({ state, commit }) {
      console.log(71, state, getToken());
      return new Promise((resolve, reject) => {
        API.getUserInfo({ token: state.token })
          .then(res => {
            const data = res.data;
            commit("setAvator", data.avator);
            commit("setUserName", data.user_name);
            commit("setUserId", data.user_id);
            commit("setAccess", data.access);
            resolve(data);
          })
          .catch(err => {
            reject(err);
          });
      });
    }
  }
};
